package hyl.base.net;

import java.net.SocketAddress;
import java.nio.ByteBuffer;

import hyl.core.run.IDo1;

public interface IpgReader {
	/**
	 * 数据包类型是ByteBuffer 表示已打包;不需要打包 并且 要求ByteBuffer 必须flip()过
	 */
	boolean send(ByteBuffer 数据包);

	/**
	 * 数据包类型是 byte[] 表示未打包;需要打包
	 */
	boolean send(byte[] 数据包);

	/**
	 * 数据包类型是 byte[] 表示未打包;需要打包
	 */
	boolean send(byte 类型, byte[] 数据包);

	/**
	 * 判断socket 是否连接中
	 * 
	 * @return
	 */
	boolean isConnected();

	void close();

	IData1<?> pull();

	byte[] pullData();

	void pullData(IDo1<byte[]> 回调);

	void pull(@SuppressWarnings("rawtypes") IDo1<IData1> 回调);

	SocketAddress get本地连接();

	SocketAddress get远程连接();
}
